﻿using Shinva.LADModel.Models;
using Shinva.Variables.Interface;
using Shinva.Variables.Type.bit;

namespace Shinva.LADModel.Abstractions
{


   /// <summary>
   /// 图元节点包含：各种指令节点，常开常闭等、虚节点、FBFC等自定义节点
   /// 图元节点实现此接口，一个图元节点需要有：使能输入en，使能输出eno，使能输入线enLine，使能输出线enoLine
   /// </summary>
    public interface IGraphNode : INode
    {
        /// <summary>
        /// 连接到下一个节点的方法，是逻辑上使能输出的地方
        /// </summary>
        /// <param name="node">要连接到的节点</param>
        /// <param name="FromName">当前节点的属性名</param>
        /// <param name="ToName">要连接到节点的属性名</param>
        void Connect(IGraphNode node, string FromName, string ToName);


        /// <summary>
        /// 通过属性名，获取当前节点的接口变量
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        IPlcMember GetInterfaceVariableByName(string name);
    }
}
